

// This file was generated automatically. See README.md.
// DO NOT MODIFY IT MANUALLY.

package com.github.xyzboom.codesmith.ir.visitors

import com.github.xyzboom.codesmith.ir.IrElement
import com.github.xyzboom.codesmith.ir.IrNamedElement
import com.github.xyzboom.codesmith.ir.IrParameterList
import com.github.xyzboom.codesmith.ir.IrProgram
import com.github.xyzboom.codesmith.ir.containers.*
import com.github.xyzboom.codesmith.ir.declarations.*
import com.github.xyzboom.codesmith.ir.expressions.IrBlock
import com.github.xyzboom.codesmith.ir.expressions.IrExpression
import com.github.xyzboom.codesmith.ir.types.*

/**
 * Auto-generated by [com.github.xyzboom.codesmith.tree.generator.printer.VisitorVoidPrinter]
 */
abstract class IrVisitorVoid : IrVisitor<Unit, Nothing?>() {

    final override fun visitElement(element: IrElement, data: Nothing?) {
        visitElement(element)
    }

    abstract fun visitElement(element: IrElement)

    final override fun visitNamedElement(namedElement: IrNamedElement, data: Nothing?) {
        visitNamedElement(namedElement)
    }

    open fun visitNamedElement(namedElement: IrNamedElement) {
        visitElement(namedElement)
    }

    final override fun visitProgram(program: IrProgram, data: Nothing?) {
        visitProgram(program)
    }

    open fun visitProgram(program: IrProgram) {
        visitElement(program)
    }

    final override fun visitDeclaration(declaration: IrDeclaration, data: Nothing?) {
        visitDeclaration(declaration)
    }

    open fun visitDeclaration(declaration: IrDeclaration) {
        visitElement(declaration)
    }

    final override fun visitClassDeclaration(classDeclaration: IrClassDeclaration, data: Nothing?) {
        visitClassDeclaration(classDeclaration)
    }

    open fun visitClassDeclaration(classDeclaration: IrClassDeclaration) {
        visitElement(classDeclaration)
    }

    final override fun visitFunctionDeclaration(functionDeclaration: IrFunctionDeclaration, data: Nothing?) {
        visitFunctionDeclaration(functionDeclaration)
    }

    open fun visitFunctionDeclaration(functionDeclaration: IrFunctionDeclaration) {
        visitElement(functionDeclaration)
    }

    final override fun visitPropertyDeclaration(propertyDeclaration: IrPropertyDeclaration, data: Nothing?) {
        visitPropertyDeclaration(propertyDeclaration)
    }

    open fun visitPropertyDeclaration(propertyDeclaration: IrPropertyDeclaration) {
        visitElement(propertyDeclaration)
    }

    final override fun visitParameter(parameter: IrParameter, data: Nothing?) {
        visitParameter(parameter)
    }

    open fun visitParameter(parameter: IrParameter) {
        visitElement(parameter)
    }

    final override fun visitClassContainer(classContainer: IrClassContainer, data: Nothing?) {
        visitClassContainer(classContainer)
    }

    open fun visitClassContainer(classContainer: IrClassContainer) {
        visitElement(classContainer)
    }

    final override fun visitFuncContainer(funcContainer: IrFuncContainer, data: Nothing?) {
        visitFuncContainer(funcContainer)
    }

    open fun visitFuncContainer(funcContainer: IrFuncContainer) {
        visitElement(funcContainer)
    }

    final override fun visitPropertyContainer(propertyContainer: IrPropertyContainer, data: Nothing?) {
        visitPropertyContainer(propertyContainer)
    }

    open fun visitPropertyContainer(propertyContainer: IrPropertyContainer) {
        visitElement(propertyContainer)
    }

    final override fun visitTypeParameterContainer(typeParameterContainer: IrTypeParameterContainer, data: Nothing?) {
        visitTypeParameterContainer(typeParameterContainer)
    }

    open fun visitTypeParameterContainer(typeParameterContainer: IrTypeParameterContainer) {
        visitElement(typeParameterContainer)
    }

    final override fun visitExpressionContainer(expressionContainer: IrExpressionContainer, data: Nothing?) {
        visitExpressionContainer(expressionContainer)
    }

    open fun visitExpressionContainer(expressionContainer: IrExpressionContainer) {
        visitElement(expressionContainer)
    }

    final override fun visitParameterList(parameterList: IrParameterList, data: Nothing?) {
        visitParameterList(parameterList)
    }

    open fun visitParameterList(parameterList: IrParameterList) {
        visitElement(parameterList)
    }

    final override fun visitType(type: IrType, data: Nothing?) {
        visitType(type)
    }

    open fun visitType(type: IrType) {
        visitElement(type)
    }

    final override fun visitNullableType(nullableType: IrNullableType, data: Nothing?) {
        visitNullableType(nullableType)
    }

    open fun visitNullableType(nullableType: IrNullableType) {
        visitElement(nullableType)
    }

    final override fun visitTypeParameter(typeParameter: IrTypeParameter, data: Nothing?) {
        visitTypeParameter(typeParameter)
    }

    open fun visitTypeParameter(typeParameter: IrTypeParameter) {
        visitElement(typeParameter)
    }

    final override fun visitClassifier(classifier: IrClassifier, data: Nothing?) {
        visitClassifier(classifier)
    }

    open fun visitClassifier(classifier: IrClassifier) {
        visitElement(classifier)
    }

    final override fun visitSimpleClassifier(simpleClassifier: IrSimpleClassifier, data: Nothing?) {
        visitSimpleClassifier(simpleClassifier)
    }

    open fun visitSimpleClassifier(simpleClassifier: IrSimpleClassifier) {
        visitElement(simpleClassifier)
    }

    final override fun visitParameterizedClassifier(parameterizedClassifier: IrParameterizedClassifier, data: Nothing?) {
        visitParameterizedClassifier(parameterizedClassifier)
    }

    open fun visitParameterizedClassifier(parameterizedClassifier: IrParameterizedClassifier) {
        visitElement(parameterizedClassifier)
    }

    final override fun visitExpression(expression: IrExpression, data: Nothing?) {
        visitExpression(expression)
    }

    open fun visitExpression(expression: IrExpression) {
        visitElement(expression)
    }

    final override fun visitBlock(block: IrBlock, data: Nothing?) {
        visitBlock(block)
    }

    open fun visitBlock(block: IrBlock) {
        visitElement(block)
    }
}
